# _*_ coding: UTF-8 _*_
# @Time     : 2021/10/26 15:07
# @Author   : yangshuaishuai
# @Site     : http://www.hzdledu.cn/
# @File     : practice5.py
# @Software : PyCharm

# 1.# 求 1-100以内所有含6的数
# list1=[]
# for i in range(1,101):
#     a = i // 100
#     b=(i-a*100)//10
#     c= i % 10
#     if b==6 or c==6:
#         list1.append(i)
# print(list1)
# def foo1():
#     list2 = []
#     for i in range(1,101):
#         j = str(i)
#         if '6' in j:
#             list2.append(i)
#     print(list2)
# 2、Chuckie Lucky赢了100W美元，
# 他把它存入一个每年盈利8%的账户。
# 在每年的最后一天，Chuckie取出10W美元。
# 编写一个程序，计算需要多少年Chuckie就会清空他的账户。
# def foo2():
#     money = 100
#     year = 0
#     while True:
#         money = money*(1+0.08)
#         money = money - 10
#         year +=1
#         if money <=0:
#             break
#     return year
#


# 3、题目：猴子吃桃问题：猴子第一天摘下若干个桃子，当即吃了一半，还不瘾，又多吃了一个 第二天早上又将剩下的桃子吃掉一半，又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时，见只剩下一个桃子了。求第一天共摘了多少。
# 程序分析：采取逆向思维的方法，从后往前推断。
# def foo3():
#     peaches =1
#     for i in range(9):
#         peaches = (peaches+1)*2
#     return peaches


# 4、不使用自带函数，写一个函数，用于返回一个数的绝对值
# def foo1(n):
#     if n<0:
#         return n * -1
#     else:
#         return n * 1
# print (foo1(0))
# 5、写一个函数，用来求三个数的最大值
# def foo2(a,b,c):
#     return max(a,b,c)
# print(foo2(23,21,8))


# 提升：
# 6、写一个函数，返回输入整数（大于999小于10000）的每位数的数字之和。
# def foo4(n):
#     str1 = str(n)
#     sum1 = 0
#     for n in str1:
#         sum1 += int(n)
#     return sum1


# 7.递归实现阶乘：
# n！=nxn-1xn-2x....1
# 5!=5x4！

def foo7(n):
    if n == 1:
        return 1
    else:
        return n * foo7(n - 1)# 得出的数值为下次循环的n


print(foo7(10))


# 8.实现1！+2！+3！+。。。+n！

def foo8(n):
    sum = 0
    for i in range(1,n + 1):
        sum += foo7(i)
    return sum


if __name__ == '__main__':
    # foo1()
    # print(foo2())
    # print(foo3())
    #print(foo4(6666))
    print(foo4)